package cms.api.framework.search;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import static cms.api.framework.search.IndexService.DEFAULT_DOCUMENT_ID_FIELD_NAME;

/**
 * 可索引的文档标识接口
 *
 * @author kuangjz
 */
public interface Indexable {
    /**
     * 获取可索引文档的唯一ID
     *
     * @return 文档ID
     */
    default String getDocId(){
        return this.getDocumentObject().getOrDefault(this.getDocIdFieldName(),"").toString();
    }

    /**
     * 获取文档唯一标识ID的字段名称
     *
     * @return 文档ID的字段名称
     */
    default String getDocIdFieldName(){
        return DEFAULT_DOCUMENT_ID_FIELD_NAME;
    }

    /**
     * 获取文档数据对象
     *
     * @return 文档数据对象
     */
    default Map<String, Object> getDocumentObject(){
        return new HashMap<>(16);
    }

    /**
     *  获取文档数据内部对象
     *
     * @return 文档数据内部对象
     */
    default Object getInternalObject(){return this;}
}
